package com.sojson.project.sys.authc.controller.param.verify;

import java.util.Set;

import com.sojson.base.impl.BaseUser;
import com.sojson.constant.DataScopeType;
import com.sojson.result.Result;
import com.sojson.util.DateUtil;
import com.sojson.util.StringUtil;
import com.sojson.util.param.ParamUtil;
import com.sojson.util.token.TokenDto;

/**
 * 认证Controller参数验证
 * 
 * @author liu
 * @date 2021-03-16
 */
public class AuthcParamVerify {

    /**
     * 帐号密码注册
     * 
     * @param dto
     * @return
     * @throws Exception 
     */
    public static Result<Boolean> pwdRegister(TokenDto dto) throws Exception {
        BaseUser user = dto.getUser();
        if (StringUtil.isBlankObject(user)) {
            return Result.fail("user参数不能为空！");
        }
        if (StringUtil.isBlankObject(user.getNickName())) {
            user.setNickName(DateUtil.nowLong() + "");
        }
        // if (StringUtil.isBlankObject(user.getHeadImg())) {
        // user.setHeadImg(ConstantByMap.DEFAULT_HEAD);
        // }
        String username = user.getUsername();

        if (StringUtil.isBlank(username)) {
            return Result.fail("帐号不能为空！");
        }
        Set<String> roleIds = dto.getRoleIds();
        if (StringUtil.isBlankObject(roleIds) || roleIds.size() < 1) {
            return Result.fail("角色ID不能为空！");
        }
        if (!ParamUtil.isRoleIdExist(roleIds)) {
            return Result.fail("角色权限不足！");
        }
        Integer dataScope = user.getDataScope();
        if (dataScope != DataScopeType.DATA_SCOPE_CUSTOM) {
            dto.setDepts(null);
        }
        ParamUtil.verifyDept(dto.getDepts());

        return Result.success();
    }

}